package com.gxuwz.com_property.common.dto;

import lombok.Data;
import org.springframework.stereotype.Component;

/**
 * 统一返回结果封装类
 * @param <T>
 */

@Data
@Component
public class ResponseDto<T> {
    /**
     * 返回消息的编码
     */
    private Integer code;
    /**
     * 返回消息的提示信息
     */
    private String message;
    /**
     * 返回消息的主数据
     */
    private T data;

    public ResponseDto() {
    }

    /**
     * this.code = code;
     *         this.message = message;
     * */
    public ResponseDto(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * this.code = code;
     *         this.message = message;
     *         this.data = data;
     * */
    public ResponseDto(Integer code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    /**
     * new ResponseDto(200, message, data); 创建实例
     * 指定操作结果和数据对象，返回一个成功的响应对象。
     * */
    public static ResponseDto success(String message, Object data) {
        return new ResponseDto(200, message, data);
    }

    /**
     *操作结果信息，返回一个默认的成功响应对象，并指定给定的操作结果信息
     * */
    public static ResponseDto success(String message) {
        return success(message, (Object)null);
    }

    /**
     *无参数的方式，返回一个默认的成功响应对象，并指定默认的操作成功信息
     * */
    public static ResponseDto success(){
        return success("操作成功");
    }

    /**
     *指定数据对象，返回一个默认的成功响应对象，并指定默认的操作成功信息。
     * */
    public static ResponseDto success(Object data) {
        return success("操作成功", data);
    }



    /**
     * new ResponseDto(500, message, data); 使用构造函数进行返回
     * */
    public static ResponseDto error(String message,Object data){
        return new ResponseDto(500, message, data);
    }

    /**
     * 用于不是500的错误
     * */
    public static ResponseDto error(int code,String message){
        return new ResponseDto(code,message,(Object)null);
    }

    /**
     *
     * */
    public static ResponseDto error(String message) {
        return error(message, (Object)null);
    }

    /**
     * 返回错误的信息
     * */
    public static ResponseDto error(){
        return error("操作失败");
    }






}
